//
//  HomeTableViewController.swift
//  Weibo10
//
//  Created by male on 15/10/14.
//  Copyright © 2015年 itheima. All rights reserved.
//

import UIKit
import SVProgressHUD


let StatusCellNormalId = "StatusCellNormalId"
class HomeTableViewController: VisitorTableViewController {
    
    /**
     * 属性列表
     */
    // 微博数据列表模型
    private lazy var listViewModel = StatusListViewModel()
    
    // 控制器入口
    override func viewDidLoad() {
        super.viewDidLoad()

        
        if !UserAccountViewModel.sharedUserAccount.userLogon {
        
        visitorView?.setupInfo(nil, title: "关注一些人，回这里看看有什么惊喜")
            
            /**
            这里是必须有返回的，如果没有返回，在这里就会继续执行，无法替换，就造成了：
            
            fatal error: unexpectedly found nil while unwrapping an Optional value
            (lldb)的错误
            */
            return
        }
        
        prepareTableView()
        
        loadData()
    }
    
    
}

// MARK: - 封装方法
extension HomeTableViewController {
    
    // 准备表格
    private func prepareTableView() {
        // 注册可重用 cell
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: StatusCellNormalId)
        
        // 预估行高
        tableView.estimatedRowHeight = 400
        
        // 取消分割线的效果
        tableView.separatorStyle = UITableViewCellSeparatorStyle.None
        
        // 自动计算高度/(动态手动计算行高)
        tableView.rowHeight = 400
    }
    
    
    // 加载数据
    private func loadData() {
        listViewModel.loadStatus { (isSuccessed) -> () in
            if !isSuccessed {
                SVProgressHUD.showInfoWithStatus("加载数据错误，请稍候重试")
                
                return
            }
            print(self.listViewModel.statusList)
            
            // 刷新数据
            self.tableView.reloadData()
        }
    }
    
}

// MARK: - 数据源方法
extension HomeTableViewController {
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return listViewModel.statusList.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(StatusCellNormalId, forIndexPath: indexPath) as! StatusCell
        
        cell.viewModle = listViewModel.statusList[indexPath.row]
        
        return cell
    }
    
    
    // UITableViewDalegate/TableView的代理方法
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        
        return listViewModel.statusList[indexPath.row].rowHeight
    }

}




